package model;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author rodolpho
 */
@Entity
@Table(name = "USUARIO_GRUPO_ACAO")
@XmlRootElement
public class UsuarioGrupoAcao implements Serializable {

    private long ugaCodigo;
    private UsuarioGrupo usuarioGrupo;
    private Acao acao;
    private Boolean ugaPermissao;

    public UsuarioGrupoAcao() {
    }

    public UsuarioGrupoAcao(long ugaCodigo, UsuarioGrupo usuarioGrupo, Acao acao, Boolean ugaPermissao) {
        this.ugaCodigo = ugaCodigo;
        this.usuarioGrupo = usuarioGrupo;
        this.acao = acao;
        this.ugaPermissao = ugaPermissao;
    }

    @Id
    @SequenceGenerator(name = "seqUsuarioGrupoAcao", sequenceName = "SEQ_USUARIO_GRUPO_ACAO")
    @Column(name = "UGA_CODIGO", unique = true, nullable = false, precision = 10, scale = 0)
    public long getUgaCodigo() {
        return this.ugaCodigo;
    }

    public void setUgaCodigo(long ugaCodigo) {
        this.ugaCodigo = ugaCodigo;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "UGR_CODIGO")
    public UsuarioGrupo getUsuarioGrupo() {
        return this.usuarioGrupo;
    }

    public void setUsuarioGrupo(UsuarioGrupo usuarioGrupo) {
        this.usuarioGrupo = usuarioGrupo;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "ACAO_CODIGO")
    public Acao getAcao() {
        return this.acao;
    }

    public void setAcao(Acao acao) {
        this.acao = acao;
    }

    @Column(name = "UGA_PERMISSAO", length = 1)
    public Boolean getUgaPermissao() {
        return ugaPermissao;
    }

    public void setUgaPermissao(Boolean ugaPermissao) {
        this.ugaPermissao = ugaPermissao;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 43 * hash + (int) (this.ugaCodigo ^ (this.ugaCodigo >>> 32));
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final UsuarioGrupoAcao other = (UsuarioGrupoAcao) obj;
        if (this.ugaCodigo != other.ugaCodigo) {
            return false;
        }
        return true;
    }
}
